Toggle navigation
Search
思元的開發筆記
Programming
Unity
LeetCode
Golang
Game Demos
Archive
Blog
About
思元的開發筆記
關於 web service, unity, blogger 等軟體工程筆記
×
Search dev.twsiyuan.com
Github SSH 連線設定,確保 Mac SourceTree 正常運作
前陣子在 Mac 上使用 SourceTree 這套 GUI 工具來管理 Github repositories,但由於帳號因安全性考量改用 2FA (Two-factor authentication) 認證後,原先在 SourceTree 採用 HTTPS 利用帳...
Read More
王思元
11:30 下午
GIT
Senior Unity Developer 面試題目分享
分享前陣子尋找新機會所遇到的 Unity 考題 ,十分有水準與微難度,事後回想並整理成此問題筆記。關於該機會的綜合心得放置在文章頁尾。
Read More
王思元
11:11 下午
Unity
Go Reader Pattern 設計與實作
最近在寫小專案所遇到的設計問題,其中一個目標是從檔案中讀取英文單字 (word),並且將其轉換成英文小寫,因此記錄如何在 Golang 設計此機制,並且不斷改進寫了三個版本,並撰寫額外的測試程式碼 (testing code) 進行驗證。
Read More
王思元
2:29 上午
程式語言
,
Golang
Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊
延續在 前一篇文章 中的議題。 前題,任何的加密機制只是增加破解難度,單機遊戲存檔若沒有特殊硬體的保護,幾乎都可以被破解,光是程式碼反編譯 (decompiling) 並且分析程式碼,便能知道該遊戲如何處理存檔加密,甚至能直接拿到加密用的金鑰 (key)。
Read More
王思元
2:28 下午
軟體工程
,
C-sharp
,
Unity
Unity 遊戲存檔機制淺談,關於壓縮 (Compression) 的三兩事
延續在 前一篇文章 中的議題,在遊戲存檔進行壓縮 (compress) 後儲存,可減少其儲存所需空間,之後讀取先經過解壓縮 (decompress) 後,再反序列化 (deserialize) 還原成遊戲狀態物件來使用。
Read More
王思元
4:00 下午
軟體工程
,
C-sharp
,
Unity
Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)
之前在社團看到的有趣問題,因此綜合以前的開發經驗,整理成這份筆記。
Read More
王思元
10:30 下午
軟體工程
,
C-sharp
,
Unity
Unity rendering order 整理筆記
自從上次 GameJam 體驗在 Unity 中,使用 SpriteRenderer 可直接調整 Sorting layer 來決定 render 順序後,便一直很好奇其背後實作到底是什麼,為什麼改變一個數值便能調整 sprites 在 render 結果的先後順序,而不...
Read More
王思元
3:12 下午
軟體開發
,
Unity
AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記
參考 Reference 章節的 AWS 文件,紀錄如何將部署 在 AWS Beanstalk 的服務所產生的日誌 (logs),設定 CloudWatch Logs agent 來自動推送至 CloudWatch,而不用每次發生問題得自己花時間去撈 logs……。 ...
Read More
王思元
6:15 下午
服務部署
,
AWS
CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go/Cgo 開發環境
整理之前在 Linux 建立 Go/Cgo 開發環境的安裝筆記。
Read More
王思元
6:30 下午
Linux
HTTP TimeoutHandler 所踩到的雷與解決方式,需要額外判斷 Request.Context() 的狀態
最近遇到在 HTTP 伺服器壓力測試時遇到棘手的問題,從 nginx logs 發現伺服器回應許多 HTTP 503 service unavailable 的錯誤,一路追蹤最終發現是程式碼實作錯誤,記錄其筆記提醒自己不要忘記這個雷。
Read More
王思元
12:30 上午
軟體開發
,
程式語言
,
Golang
Go build 建置時加入時間 (build time) 與版本號 (git commit id)
因應合作廠商需求,希望我們這邊提供網路服務 (web service) 的執行檔 (executable),能透過某些方法知道其版本號或是建置時間等資訊,以協助其 IT 人員部署 (deployment) 時使用。
Read More
王思元
9:18 下午
軟體開發
,
Golang
,
Linux
Go with Cgo 靜態連結 (static linking) 函式庫建置範例與筆記
延續上一篇 Go with Cgo 動態連結 的文章,由於部署 (deployment) 需求的改變,合作廠商 IT 運維技術人員 (Ops) 對於 Linux 的不熟悉,期望部署不需要管理那些動態連結 (dynamic linking) 函式庫,因而開始研究改用靜態連...
Read More
王思元
6:51 下午
程式語言
,
C-plus-plus
,
Golang
Go with Cgo 動態連結 (dynamic linking) 函式庫建置範例與筆記
在 上一篇文章 中,已經知道如何在 Windows 中,利用 gcc/g++ 建置動態連結函式庫 (dynamic-link library),本篇文章筆記如何在 Go (Golang) 中,利用 cgo 來動態連結函式庫,呼叫使用其函式。
Read More
王思元
6:30 下午
程式語言
,
C-plus-plus
,
Golang
在 Windows 環境建置動態連結函式庫 (Dynamic-link library),使用 MinGW gcc/g++ 以及 CodeBlock
整理在 Windows 環境下,編譯 C/C++ 產出動態連結函式庫 (Dynamic-link library) 給其他專案使用的筆記。 大部分的情況下,在 Windows 作業系統中,通常都使用 Microsoft 所推出的 Vistual Studio IDE 來...
Read More
王思元
6:30 下午
軟體開發
,
C-plus-plus
,
Windows
開發 Blog 文字雲工具,統計部落格字詞出現次數
空閒時間開發的小工具,能夠統計部落格 (Blog) 文章字詞數量,然後根據字詞出現頻率,組合畫在一張圖片上的功能。 建議使用桌機電腦 (desktop),以避免繪製文字雲效能的低落 這功能記得從 2017 下半年就想嘗試,然後一直拖拖...
Read More
王思元
5:16 下午
軟體開發
,
Blogger
,
Golang
Heroku with Golang,如何部署第一個 WebApp
Heroku 是一套支援多程式個語言的雲平台即服務 (platform as a service, PaaS),只要將程式碼上傳到該服務中,便可上頭自動編譯執行,建造自己的網路應用程式,且該服務提供免費試用方案 (有限制的),又有支援 SSL (https)。
Read More
王思元
2:48 下午
服務部署
,
Golang
Linux CentOS Network unreachable 處理解決方式
最近在 VMware VMPlayer 的虛擬機器上安裝 CentOS 7,準備進行需 Docker 環境測試與研究,但卻發現沒有網路……跟以前安裝 CentOS 6 情況不同,當時可是直接有網路的,花點時間整理啟用網路的筆記,對 Linux 不熟悉就得花上許多時間研究...
Read More
王思元
2:55 下午
Linux
使用 Lighthouse 來檢查網站設定,為了更好的 SEO 以及瀏覽體驗
從新聞得知有這個工具,GoogleChrome Lighthouse 是一套開源自動化工具,用來協助檢查網站 (Website) 或是網路應用程式 (Web App) 的質量 (quality),從讀取效能 (performance)、網頁親和力 (accessibil...
Read More
王思元
11:26 上午
網站
C# 回傳內部資料集合的幾種方式,考慮封裝與設計需求
Game Jam 活動 上遇到的有趣問題,如何設計回傳資料集合 (data collection) 的函式 (function)?筆記以下幾種方式,範例採用背包類別 (ItemBag class),要將其類別的內部道具資料,暴露給其他類別使用。 附註:System.Co...
Read More
王思元
8:22 下午
程式語言
,
C-sharp
LeetCode #84 Largest Rectangle in Histogram
Given n non-negative integers representing the histogram's bar height where the width of each bar is 1, find the area of larges...
Read More
王思元
6:30 下午
題目解題
,
LeetCode
Unity C# 遊戲事件訊息通知機制設計 - Observer pattern
前陣子同事分享去資策會 Design pattern 課程所學,聽到 Observer pattern (觀察者模式) 的介紹,感覺這比較是 C++ 老派的實作方式,不一定適用於 C#,因此在此寫此筆記記錄。
Read More
王思元
8:41 下午
程式語言
,
C-sharp
,
Unity
如何設定 Linux 使用 SSH Key-based 登入驗證方式,使用 PuTTY 登入 Linux 伺服器
最近公司架台內部使用的 Linux 機器,原先是輸入 MIS 所設定的帳號密碼登入,但保管帳號密碼顯得有點難以記憶,因此想到可以使用公開金鑰認證 (Public Key Authentication) 方式,不用輸入密碼而是提供私密金鑰來進行登入。
Read More
王思元
6:14 下午
Linux
AWS Beanstalk: Cannot open shared object file and ldconfig
持續的 Beanstalk 部屬筆記,最近部屬的 Go web application,使用到 cgo 動態連結其他函數庫 (shared library) 的函數,在執行階段發生找不到函數庫的錯誤:
Read More
王思元
6:39 下午
服務部署
,
AWS
,
Linux
AWS Beanstalk: Configuring the proxy server - Keepalive connection with backend app
無意間在檢查應用服務時,所發現的 nginx 設定問題,每次與 nginx 連線要求時,nginx 都會另外開一個連線來處理與後端伺服器 (backend app) 的資料交換。目前專案服務採用 source bundle 方式在 Beanstalk 平台部屬 (dep...
Read More
王思元
6:15 下午
服務部署
,
AWS
,
nginx
AWS Beanstalk: HTTP 502 Upstream sent too big header while reading response header from upstream
最近檢查即將上線的服務,發現主要服務經常發生 HTTP 500 的錯誤,從 logs 中確認是其中某個 REST 微服務回應 HTTP 502 Bad Gateway 所導致的,因而從中翻翻閱該微服務的全部 logs,並找到出錯原因以及解決方法。
Read More
王思元
6:30 下午
服務部署
,
AWS
,
nginx
Unity C# Interface, Inheritance and Component:以狀態血量設計為例
最近同事分享之前受訓所學的 Design patterns,加上看到社群有人詢問血量設計問題,因此整理關於在 Unity 中,設計血量系統的可能實作方法。 不得不說,剛從學校畢業開始接觸 Unity 時,最優先採用的是類別繼承 (class inheritance),...
Read More
王思元
1:16 下午
軟體工程
,
C-sharp
,
Unity
Unity C# Inheritance vs Composition 繼承與組件式設計之戰鬥系統經驗談
基於一些機緣而回憶之前身為初心者所掉過的坑,到底應該是使用繼承 (Inheritance) 抑或是組合 (Composition) 方式來設計遊戲中的戰鬥系統,哪一種比較適合 持續變動的遊戲開發 ?
Read More
王思元
11:15 下午
軟體工程
,
Unity
較新的文章
較舊的文章
粉絲專頁
本週熱門
網誌存檔
贊助廣告
粉絲專頁
每周熱門
在 Unity 使用 AssetBundles 實作簡易的遊戲資源打包以及更新機制
Unity 官方之前在 Asset Store 上有分享 AssetBundle Manager ,並提供官方教學文章介紹 AssetBundle 載入機制,我們參考該教學以及範例,因應遊戲設計考量,自己使用 Unity 提供的底層 AssetBundle API,製作...
TortoiseGit 配置 PuTTY Key
每次使用 TortoiseGit 進行專案遠端的 Pull/Push 都需要輸入一次認證,次數多了覺得麻煩懶惰,怎麼沒法記憶認證密碼這一回事?原來只是不會用而已…,以下筆記使用 PuTTY 建立 SSH Key,讓 Git 使用 SSH Key 認證,而不用每次進行遠端操作時,...
Unity 專案中 *.meta 做什麼用
最近團隊有人詢問 Unity 的 GUID 機制,在思考回答的過程中,順便把它整理成這篇筆記。如果要尋找能夠與工程團隊合作的 Unity 工程師,我想這一題應該會列在考題之中,meta 檔是做什麼用的?如果能回答出 Unity GUID 追蹤資源的機制,相信已經能夠滿足團隊...
There are inconsistent line endings in the 'SomeScript.cs' script. Some are Mac OS X (UNIX) and some are Windows. 的處理方法
Unity 使用上常常遇到的警告,經常從 Unity Project 點選程式碼,使用預設的 IDE - Visual Studio 編輯程式碼後,回到 Unity 等待編譯完成後,會遇到丟出來的警告訊息:
Unity Coroutine 使用筆記
最近有人問為什麼 Nested coroutine 的機制與問題,為什麼會是需要 yield return StartCoroutine(...) ,而不能省略 StartCoroutine ?在久遠的 Unity3.x 時代,印象中得呼叫該函數才能夠正常運作。...
學習 Unity 自製編輯器需要知道的三個管道 (Custom editor programming in Unity)
Unity 現在算是台灣業界常用的遊戲引擎之一,其功能不僅協助開發人員快速開發遊戲外,還提供讓開發人員自訂專案所需要的編輯器 (Editor)。 一位資深的程式設計師不僅得學習如何使用 Unity,撰寫架在 Unity 上的專案程式碼,甚至還需要學習如何開發 Unity ...
Unity AssetBundle Variants 機制研究筆記
最近使用 AssetBundle Variants 機制來打包遊戲專案,紀錄打包遇到的問題以及解決筆記。關於 AssetBnudles 機制可以參考 系列文章 。
在 Unity 使用 AssetBundles 實作進階的遊戲資源打包以及更新機制
在 前篇文章 中,我們僅是將所有遊戲資源(Assets) 包在同一包 AssetBundle,這會造成小量的資源更新,玩家得重新下載這一大包的 AssetBundle 才行,造成遊戲體驗變得很糟,且也會造成伺服器流量負擔。 在這篇文章裡,我們將考慮開發者所設定的 Ass...
Unity 開發者大會筆記 2017,優化x優化x優化
紀錄這次參加 Unity 開發者論壇,比較有印象的場次筆記。因為是開發者大會,所以大多是聽技術專場,而很大一部分都是在討論遊戲優化的議題。如何讓遊戲效能能夠穩定 FPS 60 以上,讓玩家擁有較好的遊戲體驗,而不是玩起來卡卡的,這是一個相當重要的議題。 而遊戲優化議...
Unity5 Graphic raycastTarget default values
What is this 從社團上看到有人在討論,Unity GUI 大量的 UI 物件會使得 Graphic Raycaster 效能低落,因為要判斷該 Canvas 上許多的 Graphic 物件有沒有被 Ray 打到。主要的解決方案是減少判斷的 Graphic 物件,設...
網誌存檔
▼
2018
( 27 )
▼
10月
( 1 )
Github SSH 連線設定,確保 Mac SourceTree 正常運作
►
9月
( 1 )
Senior Unity Developer 面試題目分享
►
8月
( 1 )
Go Reader Pattern 設計與實作
►
6月
( 3 )
Unity 遊戲存檔機制淺談,加密 (Encryption) 保護遊戲存檔防作弊
Unity 遊戲存檔機制淺談,關於壓縮 (Compression) 的三兩事
Unity 遊戲存檔機制淺談,從序列化 (Serialization) 到儲存裝置 (Storage)
►
5月
( 5 )
Unity rendering order 整理筆記
AWS Beanstalk: 日誌 Logs 推送到 CloudWatch 之設定筆記
CentOS 7 環境安裝筆記,GUI/gcc/g++/Code::blocks/Go 完整的 Go...
HTTP TimeoutHandler 所踩到的雷與解決方式,需要額外判斷 Request.Cont...
Go build 建置時加入時間 (build time) 與版本號 (git commit id)
►
4月
( 4 )
Go with Cgo 靜態連結 (static linking) 函式庫建置範例與筆記
Go with Cgo 動態連結 (dynamic linking) 函式庫建置範例與筆記
在 Windows 環境建置動態連結函式庫 (Dynamic-link library),使用 Mi...
開發 Blog 文字雲工具,統計部落格字詞出現次數
►
3月
( 1 )
Heroku with Golang,如何部署第一個 WebApp
►
2月
( 6 )
Linux CentOS Network unreachable 處理解決方式
使用 Lighthouse 來檢查網站設定,為了更好的 SEO 以及瀏覽體驗
C# 回傳內部資料集合的幾種方式,考慮封裝與設計需求
LeetCode #84 Largest Rectangle in Histogram
Unity C# 遊戲事件訊息通知機制設計 - Observer pattern
如何設定 Linux 使用 SSH Key-based 登入驗證方式,使用 PuTTY 登入 Lin...
►
1月
( 5 )
AWS Beanstalk: Cannot open shared object file and ...
AWS Beanstalk: Configuring the proxy server - Keep...
AWS Beanstalk: HTTP 502 Upstream sent too big head...
Unity C# Interface, Inheritance and Component:以狀態血...
Unity C# Inheritance vs Composition 繼承與組件式設計之戰鬥系統經驗談
►
2017
( 59 )
►
12月
( 4 )
►
11月
( 3 )
►
10月
( 6 )
►
9月
( 5 )
►
8月
( 5 )
►
7月
( 5 )
►
6月
( 5 )
►
5月
( 4 )
►
4月
( 5 )
►
3月
( 8 )
►
2月
( 6 )
►
1月
( 3 )
►
2016
( 44 )
►
12月
( 3 )
►
11月
( 2 )
►
10月
( 6 )
►
9月
( 4 )
►
8月
( 5 )
►
7月
( 4 )
►
6月
( 4 )
►
5月
( 2 )
►
4月
( 2 )
►
3月
( 3 )
►
2月
( 6 )
►
1月
( 3 )
►
2015
( 1 )
►
12月
( 1 )
贊助廣告